package com.example.jul.controller;

import org.apache.log4j.Appender;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Enumeration;


/**
 * @author 星空 岳先生
 * @name
 * @date 2022-11-15 1:15
 */
@RestController
@RequestMapping("/log4j")
public class Log4jController {
    //具体测试代码Demo
    @GetMapping("/demoA")
    public void demoA() {
        //创建日志记录器对象 注意是 org.apache.log4j.Logger 包下的
        BasicConfigurator.configure();
        Logger logger = Logger.getLogger(Log4jController.class);
        //打印日志
        logger.fatal("严重错误，一般造成系统崩溃并终止运行");
        logger.error("错误信息，不会影响系统运行");
        logger.warn("警告信息，可能会发生问题");
        logger.info("运行信息，数据连接，网络连接，IO操作等");
        logger.debug("调试信息，一般在开发中使用，记录程序变量传递信息等等");
        logger.trace("追踪信息，记录程序所有的流程信息");
    }

    //为了测试默认日志级别，可以使用以下代码测试RootLogger：
    @GetMapping("/demoB")
    public void demoB () {
        // 初始化系统配置，不需要配置文件（这里直接使用默认配置）
        BasicConfigurator.configure();
        // 获取日志记录器对象RootLogger
        final Logger rootLogger = Logger.getRootLogger();
        // 输出配置详情
        System.out.println("Logger level: " + rootLogger.getLevel());
        // 获取全部Appends
        final Enumeration allAppenders = rootLogger.getAllAppenders();
        while (allAppenders != null && allAppenders.hasMoreElements()) {
            final Appender appender = (Appender) allAppenders.nextElement();
            System.out.println("Appender is: " + appender.getClass().getSimpleName());
        }
    }
}
